This invention relates to methods of encoding payload bits (e.g. representing data or control information) for transmission over a communications link.
The spread of personal computers and workstations has led to the development of networks for interconnecting such equipment and common resources such as printers and data storage devices. More powerful and sophisticated computing equipment and programs have progressively become available, allowing the processing of data in larger and larger quantities, for example in the form of database information and graphic images. These developments have placed increasing demands on the speed and capacity of network communications links.
For various reasons it has been found desirable to encode data prior to transmission over communications links, in particular:
to ensure that certain minimum error detection capabilities are provided;
to provide uniquely identifiable control signals which can be embedded in the encoded symbol stream;
to assist in maintaining synchronisation of circuit operation (for example by avoiding prolonged sequences of symbols without any signal transition); and
to limit undesired electro-magnetic emissions from conductors, and, even in the case of optical systems, from transceivers and chipsets.
It is also usually desirable to avoid significant imbalance or disparity in the occurrence of differently-valued symbols (e.g. positive and negative polarity symbols), to avoid problems of transmission through systems having a.c. coupling, such as through isolating transformers. Various codes have been proposed and adopted which attempt to balance these objectives relative to one another.
As communication link speeds rise, another issue to be considered in the design of a code is its efficiency, i.e. the ratio between the number of data symbols in a data word and the number of code symbols in the corresponding code word. Any reduction in efficiency results in the need for faster circuit operation to maintain a given rate of transfer of actual data (i.e. the date prior to encoding). At higher communications speeds (e.g. 10 Gbit/s) in particular it is therefore desirable to keep the efficiency as high as possible, to avoid circuit operation at or beyond the capabilities of current technology at reasonable cost.
It is an object of this invention to provide a method of encoding data which facilitates achieving a balance between these different and partially conflicting requirements.
According to one aspect of this invention there is provided a method of encoding payload bits for transmission over a communications link such that the running disparity of the transmitted symbol stream is constrained within a predetermined limit, and said payload bits comprising either data or control information, comprising the steps of:
assembling an even number of payload bits into a data block, said payload bits being constrained to have zero disparity in the case where they comprise control information;
deriving the disparity of the data block;
if the disparity of the data block is non-zero and of the same sense as the running disparity of the transmitted symbol stream, inverting the bits in the data block and assigning a first value to a plurality of label bits;
if the disparity of the data block is non-zero and of opposite sense to the running disparity of the transmitted symbol stream, assigning a second value to the plurality of label bits;
if the disparity of the data block is zero and the payload bits constitute data, assigning a third value to the plurality of label bits;
if the payload bits comprise control information, assigning a fourth value to the plurality of label bits; and
transmitting the payload and label bits in the symbol stream and deriving the running disparity of the transmitted symbol stream.